High speed overlay of idle I2C bus bandwidth

ABSTRACT

High-speed serial communications between programmable devices connected to an I2C bus that includes a serial clock channel (SCL) and a serial data channel (SDA), having at least a logical low state and a logical high state. The programmable device determines if the SCL channel is idle, indicated by a logical high state. Determining the SCL to be idle, the programmable device holds the SCL to a logical low state. The programmable device operates high-speed serial communications using the SDA channel while holding the SCL to the low logical state. In response to completion of the high-speed communications, the programmable device releases the SCL channel and the SCL channel returns to the logical high state.

FIELD OF THE INVENTION

The present invention relates generally to the field of bus interfacesfor computing devices and components, and more particularly to accessingidle bandwidth of an I2C bus for a high speed serial communicationinterface.

BACKGROUND OF THE INVENTION

Architectural designs for printed circuit boards (PCBs) of electronicdevices connect components by a communication channel referred to as abus. A bus may be considered a parallel bus when it consists of parallelbit lanes transmitting data in clock synchronous or asynchronousfashion. A bus is considered to be a serial bus when data is transmittedon a single data lane, either synchronously or asynchronously.

Computing devices and many electrical components make use of multiplebuses, interconnected through bridges forming a communications fabric.Various devices, such as integrated circuits (ICs), and devices thatinclude ICs are typically attached to a bus that is controlled by one ormore programmable microcontrollers. A simple and commonly used bus isthe inter-integrated circuit (I2C, “eye two see”) bus, also known as the“eye squared see” bus (I²C). The I2C bus physically consists of 2 activewires and a ground connection. The active wires are the serial data line(SDA) and the serial clock line (SCL), and are both bi-directional.Every device connected to the bus is assigned a unique address,regardless of whether it is a microcontroller (MCU), a liquid crystaldisplay (LCD) driver, a memory device, or an application-specificintegrated circuit (ASIC). Devices on an I2C bus can act as a receiverand/or transmitter, depending on their functionality, (an LCD driver isonly a receiver). The I2C bus can support multi-masters, meaning thatmore than one IC capable of initiating a data transfer can be connectedto the bus. An IC that that initiates a data transfer on the bus isconsidered the bus master for that transaction, according to the I2Cprotocol, and all other devices connected to the bus assume the role ofbus slaves.

The I2C bus is generally used to connect slow-speed peripherals toembedded devices, motherboards, PCB cards, cell phones, and otherelectronic devices and components. The main objective behind the I2C buswas to establish a simple low pin count bus that can connect differentICs on a circuit board of industrial controls, televisions or radios.Later, I2C grew beyond the limits of TV and Radio and is now found inalmost every computer motherboard and other embedded devices, such asindustrial and slow, remote applications. I2C can also be used forcommunication between multiple circuit boards in equipments with orwithout using a shielded cable depending on the distance and speed ofdata transfer.

As the density of PCB circuitry continues to increase, minimizing thecircuit density, required device pins, and the number of interfaces hasbecome significantly important in computer and component designarchitecture. Methods to reduce the number of interfaces within thecommunication fabric of computing devices and components while allowingincrease of circuit density and the number of interconnected devicescontinue to be explored.

As more devices are connected to a bus, the speed of the bus reduces dueto the capacitive loading effect of the devices. The I2C bus isgenerally associated with transmission speeds up to 400 Kb/sec, withhigher speed (up to 3.4 Mb/sec) possible with the appropriateconfiguration, and has a maximum capacitance of 400 picofarads (pF).Thus the I2C bus can be considered a slow, synchronous bus with a speedthat is limited by the pull-up resistors needed for the master-slavearrangement and the physical bus capacitance. Devices such as fieldprogrammable gate arrays (FPGAs) and complex programmable logic devices(CPLDs) are capable of communication transmission speeds that aregenerally much higher than a typical I2C bus, for example, gigabit/sectransmission rates. This requires additional bus interface and protocoldesigns for PCBs and computing devices that employ FPGAs and CPLDs.

SUMMARY

Embodiments of the present invention disclose a method, computer programproduct, and system for serial communications of a programmable deviceconnected to an I2C bus, the bus including a serial clock channel (SCL)and a serial data channel (SDA), and the channels including at least afirst logical state and a second logical state. The programmable devicedetermines if the SCL channel and the SDA channel are idle, wherein theidle SCL channel is at the second logical state. Responsive to the SCLchannel and the SDA channel being idle, the programmable devicetransmits a signal holding the SCL to the first logical state. Theprogrammable device operates high-speed serial communications using theSDA channel and in response to completion of the high-speed serialcommunications, the programmable device releases the SCL channel and theSCL channel returns to the second logical state.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating an I2C busenvironment, in accordance with an embodiment of the present invention

FIG. 2 is a block diagram illustrating communication activity on an I2Cbus including idle bandwidth, in accordance with an embodiment of thepresent invention.

FIG. 3 is a block diagram illustrating a high speed overlay of an I2Cbus, in accordance with an embodiment of the present invention.

FIG. 4 illustrates a flowchart of I2C overlay program inserted on acomponent device within the I2C bus environment of FIG. 1, in accordancewith an embodiment of the present invention.

FIG. 5 depicts a block diagram of components of the proxy servercomputer executing the intelligent mapping program, in accordance withan embodiment of the present invention.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer-readablemedium(s) having computer readable program code/instructions embodiedthereon.

Any combination of computer-readable media may be utilized.Computer-readable media may be a computer-readable signal medium or acomputer-readable storage medium. A computer-readable storage medium maybe, for example, but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, ordevice, or any suitable combination of the foregoing. More specificexamples (a non-exhaustive list) of a computer-readable storage mediumwould include the following: an electrical connection having one or morewires, a portable computer diskette, a hard disk, a random access memory(RAM), a read-only memory (ROM), an erasable programmable read-onlymemory (EPROM or Flash memory), an optical fiber, a portable compactdisc read-only memory (CD-ROM), an optical storage device, a magneticstorage device, or any suitable combination of the foregoing. In thecontext of this document, a computer-readable storage medium may be anytangible medium that can contain, or store a program for use by or inconnection with an instruction execution system, apparatus, or device.

A computer-readable signal medium may include a propagated data signalwith computer-readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer-readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on a user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable medium that can direct a computer, other programmabledata processing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer-readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce acomputer-implemented process such that the instructions which execute onthe computer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

Embodiments of the present invention utilize idle cycle bandwidth of anI2C bus as an interface for a high-speed communications bus betweenprogrammable devices, activated by a bus master controller deviceconnected to the I2C channels. The bus master controller device holdsthe SCL at a logical low state and completing high-speed communicationoperations, followed by the bus master controller device setting the SDAto the logical high state and releasing the SCL from a logical lowstate. The SCL returns to a logical high state and normal I2C operationcontinues. Multiple asynchronous, single bit lane (wire) operations arepossible over the SDA during this bus cycle. Devices utilizing idlebandwidth of an I2C bus for high-speed communications may use ahigh-speed, single-ended, serial protocol.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram illustrating an I2Cbus environment, generally designated 100, in accordance with oneembodiment of the present invention. I2C bus environment 100 includesmaster 130, additional bus connection 110, devices 140 150, and I2Cdevices 170, serial clock circuit line (SCL) 115, serial data circuitline (SDA) 120, pull-up resistors 180 and 185, and power rail 190. I2Cbus environment 100 also includes I2C overlay program 400 (not shown),operated by a programmable bus master controller, such as master 130.

In a preferred embodiment of the present invention I2C bus environment100 includes an I2C bus that has bi-directional communication channelsand may be part of the communications fabric of a computing device, suchas a desktop computer, a laptop computer, a tablet computer, a netbook,a server computer, a personal data assistant (PDA), a smartphone, or maybe included in electronic devices requiring signal processing, such asaudio or video processing, or used in other control and signalprocessing applications.

The I2C bus is capable of supporting multiple controlling devices, suchas master 130. Master 130 includes a programmable microprocessor andassumes a controlling function for the bus, when operating as a masterrole in a master/slave relationship, with the additional devicesattached to the I2C bus acting in a slave role. Master 130 is connectedto SDA 120 and SCL 115, controls clock signals transmitted on SCL 115,and transmits and receives data signals on SDA 120. Slave devices haveconfigurable address pins and internally addressable registers, withwhich master 130 identifies each device on the I2C bus by physical andlogical addresses, establishing device identity in support ofcommunications between master 130 and the slave devices. Master 130 isalso connected to bus connection 110, which may connect to a system bus,or another bus as part of the communication fabric of a computing deviceor electronic device.

SCL 115 and SDA 120 are each bi-directional signal lines forming thecommunications channels of the I2C bus, interconnecting attached devicesand master controllers. SCL 115 carries clock signals produced by amaster controller, such as master 130. The clock signals generallyinclude at least two voltage states referred to as a logical high stateand a logical low state. The minimum and maximum voltages for the highand low states are dependent on the specific electrical bus signalingimplementation, ranging typically between 2.5V and 5V. Typically the lowstate is a non-zero voltage with a value near zero and the high state isdiscernable from the low state voltage by the attached devices and oneor more master controller, and may be a value such as +2.5V or +5.0 V,as stated above. SDA 120 carries data signals to and from master 130 andto and from devices, such as devices 140, 150 and I2C devices 170,attached to I2C bus environment 100, and similarly has a logical highstate and a logical low state. The number of devices that can attach toan I2C bus is limited by the address space (7 bit addressing) and alsoby the total bus capacitance limitation of 400 pF.

I2C bus environment 100 includes device 140 and device 150 which areconnected to the I2C bus lines SCL 115 and SDA 120. In an embodiment ofthe present invention, device 140 is a FPGA or a CPLD. An FPGA is anintegrated circuit designed to be configured by a customer or a designerafter it is manufactured, thus being “field-programmable”. The FPGAconfiguration is generally specified using a hardware descriptionlanguage (HDL), similar to that used for an application-specificintegrated circuit (ASIC). FPGAs can be used to implement any logicalfunction that an ASIC performs. The ability to update the functionalityafter shipping, and the low cost relative to an ASIC design, offers manyadvantages.

In an embodiment of the present invention, device 150 is a CPLD or aFPGA, which can be used to perform the function of many logic ICs. Asmall CPLD can replace the function of a handful of standard logic IC's,whereas a large CPLD can replace the function of hundreds of logic ICs,resulting in a drastic reduction of required circuit board space andpower consumption. The logic function performed by a CPLD isuser-programmable, and can be erased and re-programmed, on the fly, manytimes. FPGAs and CPLDs communicate at high-speed and typically cantransmit and receive communications at rates that are orders ofmagnitude higher than the typical device connected to I2C bus channels.

I2C devices 170 may be devices such as a digital visual interface (DVI)display driver, an audio or video signal processor, an analog to digitalconverter, a digital to analog converter, a non-volatile random-accessmemory (NVRAM) chip for user settings, sensors for reading CPUtemperature and fan speed, reading real-time clocks, monitoringvoltages, turning the power supply of system components on and off,controlling OLED or LCD displays, and reading configuration data fromSPD EEPROMS on various memory modules. I2C devices 170 typicallyfunction as slave devices in a master/slave relationship, however, theI2C protocol allows for any device on the I2C bus to postpone mastercontroller transmissions for a period of time, by forcing SCL 115 lineto a logical low state until the I2C device is prepared to continuetransmitting or receiving data.

SCL 115 and SDA 120 are shown in FIG. 1 as having pull-up resistors 180and 185 attached, respectively. SCL 115 and SDA 120 are open-collectoroutputs from bipolar transistors. SLC 115 and SDA 120, in combinationwith pull-up resistors 180 and 185, are connected to power rail 190 andcreate a circuit technique used to allow multiple devices to communicatebi-directionally on a single wire. Power rail 190 operates with pull-upresistors 180 and 185 to hold the I2C channels at a logical high stateuntil a device on the wire sinks enough current to pull the line to alogical low state. After a device, such as devices 140 and 150, I2Cdevices 170, or master 130, for example, releases the channels from alogical low state, power rail 190 and pull-up resistors 180 and 185function collectively to bring SDA 120 and SCL 115 bus channels to alogical high state. In a preferred embodiment of the present invention,device 140 and device 150 are programmed to control the I2C bus fortransmitting and receiving high speed communications, when the buschannels are detected to be idle, by holding SCL 115 to a logical lowstate and using the connection to SDA 120 for serial transmission orreceipt of data.

FIG. 2 is a block diagram illustrating communication activity on an I2Cbus including idle bandwidth, in accordance with an embodiment of thepresent invention. In an exemplary embodiment, the I2C bus of FIG. 2includes connected IC devices (connected I2C devices other than master130 not shown) such that the overall capacitance of the bus is wellbelow the 400 pF specification limit. Master 130 is shown connected toSCL 115 and SDA 120 and SCL 115 includes a connection to pull-upresistor 180, which is connected to power rail 190, as discussed withrespect to the FIG. 1 discussion above. Similarly, SDA 120 includes aconnection to pull-up resistor 185, which is connected to power rail190.

First activity clock 250 is part of a communication transaction on theI2C bus following the I2C protocol. First activity clock 250 is shown asincluding the clock pulses on SCL 115 of I2C communication of master 130to a device on the I2C bus. In one embodiment, first activity clock 250includes the clock pulses of SCL 115 for the transactions of the I2Cprotocol for I2C device communications. Second activity clock 255similarly represents the clock pulses of SCL 115 associated with asubsequent second I2C communication on the I2C bus, with idle bandwidth270 depicting a period in which the I2C bus is idle.

First activity data 260 is part of an I2C communication transaction onthe I2C bus that follows the I2C protocol and includes the serial datatransmission on SDA 120 for the first communication activity. Secondactivity data 265 similarly depicts the data transmissions on SDA 120associated with a second communication on the I2C bus.

Between the first and second communications activity is idle bandwidth270, which depicts both SCL 115 and SDA 120 in a logical high state anddefines a region in which there are no I2C communications. An I2C bushas properties that support different communication speeds for differentdevices attached to the bus, and particularly support for slowercommunication rates. An I2C bus may typically operate at a communicationrate of 400 Kb/sec, with faster rates possible with additionalconditions and properly configured devices. However, an I2C bus thatincludes connected devices operating at a standard I2C mode transmissionrate can experience significant amounts of idle bandwidth on the bus(i.e. idle bandwidth 270). Idle bandwidth 270 provides an opportunity tooverlay a high-speed interface for programmable devices.

In embodiments of the present invention, idle bandwidth 270 includes buscycles in which SCL 115 held to a logical low state, sometimes referredto as clock stretching, enabling high-speed communications.

FIG. 3 illustrates a high speed overlay on an I2C bus in I2C busenvironment 100 during an I2C bus phase in which SCL 115 is held to alogical low state, in accordance to an embodiment of the presentinvention. Master 130, devices 140, 150, and I2C devices 170 aredepicted as connected to SCL 115 and SDA 120 of an I2C bus, and SCL 115and SDA 120 are connected to pull-up resistors 180 and 185 respectively.As discussed with respect to FIG. 1, devices 140 and 150 are high-speedprogrammable devices such as FPGAs or CPLDs. First activity clock 250and first activity data 260 are shown as a first communication activitybetween master 130 and I2C devices 170 using I2C protocol on SCL 115 andSDA 120 bus channels. Similarly second activity clock 255 and secondactivity data 265 are shown as corresponding to a second communicationactivity using I2C protocol on SCL 115 and SDA 120 bus channels. IdleI2C bus 275 and 280 depict a condition in which SCL 115 and SDA 120 areboth at the logical high state.

High speed bus 300 is shown between the first and second I2Ccommunication activities and serves as an interface for high speedserial communications between master 130, devices 140 and 150, and maycommunicate to other components accessible through bus connection 110.I2C connected devices that have been programmed to respond to high-speedserial communications on SDA 120 while SCL 115 is held at a low logicalstate, will respond to high-speed communications. Regular I2C devices,such as I2C devices 170, having not been identified to master 130 ascapable of high-speed communications, do not respond to activity on SDA120 during high-speed transmission.

In a preferred embodiment of the present invention, master 130 anddevices 140 and 150 are programmed to determine when the channels of theI2C bus are idle, a condition in which SCL 115 and SDA 120 both remainat a logical high state, which indicates the I2C bus is idle. Detectingthe idle condition of SCL 115 and SDA 120, master 130 initiates a signalthat holds SCL 115 to a logical low state. Holding SCL 115 to a logicallow state will prevent transmissions from the other devices connected tothe I2C bus, which remain idle until SCL 115 is released and returns tothe logical high state. Holding SCL 115 at the logical low state, master130 begins high-speed transmission, effectively using the idle bandwidthof the I2C bus for high-speed serial communications. The high-speedserial communications may use a high speed protocol to identify thetarget device for communication, and may include acknowledgements, andother protocol elements to support high-speed serial communications. Inone embodiment, devices 140 and 150 may be connected directly to ormultiplexed with, SCL 115 and SDA 120.

For example, an I2C communication transaction, such as first activitydata 260 and first activity clock 250, are initiated on SDA 120 and SCL115 by a master controller and I2C protocol conditions are followed. TheI2C communication is targeted to one of I2C devices 170, thetransmission is sent and the I2C transaction is completed. Master 130determines that SCL 115 and SDA 120 both remain at the logical highstate, for example the condition represented by idle I2C bus 275,indicating that the I2C bus is idle. Master 130 initiates a signal tohold SCL 115 at the logical low state and begins high-speed serialcommunications on SDA 120, for example, sending instructions to device140 indicating that a high-speed “write” transaction will follow. Device140 acknowledges transmissions received from master 130 and waits toreceive the high-speed data from master 130. After device 140 determinesthe transmission is complete, it returns to the I2C signaling level, andMaster 130 returns output to pull-up resistors 180 and 185 and powerrail 190. Master 130 releases SCL 115, and SDA 120 and SCL 115 arerestored to an idle condition in which both channels are at the logicalhigh state, for example idle I2C bus 280.

When master 130 has completed the high-speed communications, both SCL115 and SDA 120 channels return to the logical high state, normal I2Ctransactions continue. For example, the I2C transactions of secondactivity clock 255 and second activity data 265 are depicted as anadditional I2C communication following a period of time in which the I2Cbus was used for high-speed serial communications.

FIG. 4 illustrates a flowchart of I2C overlay program 400 installed onat least one programmable master controller device within I2C busenvironment 100 of FIG. 1, in accordance with an embodiment of thepresent invention. I2C overlay program 400 is executed by a programmablemaster controller device connected to the channels of an I2C bus. I2Coverlay program 400 monitors the I2C bus to determine when the bus isidle, which is indicated by the SCL and SDA remaining, (for minimumperiod of time, for example 1 us min.) at the logical high state (step410). For example, an I2C protocol transaction is in progress on SCL 115and SDA 120, with the logical state of SCL 115 and SDA 120 changingbetween logical high and low state to reflect the I2C protocol activity.I2C overlay program 400 monitors SCL 115 and SDA 120 to identify an idlecondition of the I2C bus (step 410). The period of time that SCL 115 andSDA 120 both remain at a logical high state to indicate an idle I2C busmay vary depending on the devices connected to the I2C bus. In oneembodiment of the present invention, a minimum of 1 μs in which both SDA120 and SCL 115 are at the logical high state indicates that the I2C buschannels are idle, and high-speed serial communication activity may beinitiated. In other embodiments, a period of time less than 1 μs, withboth SDA 120 and SCL 115 at the logical high state, may be used toindicate idle I2C bus channels.

Monitoring the I2C bus and detecting the SCL or the SDA at the logicallow state, I2C overlay program 400 determines that the I2C bus is activeand I2C overlay program 400 continues to monitor the logical state ofSCL 115 and SDA 120 to identify idle conditions of the I2C bus (step420, “no branch”). For example, I2C overlay program monitors SCL 115 andSDA 120 I2C bus channels and determines that at least one of thechannels are either not at the logical high state, or do not remain atthe logical high state for a minimum of 1 μs. I2C overlay program 400continues to monitor the logical states of SCL 115 and SDA 120 (step420, “no branch”).

At the conclusion of an I2C protocol transmission, the I2C SCL and SDAchannels return to a logical high state, and remain at the logical highstate due to current I2C communications having been completed. I2Coverlay program 400 detects this condition and determines that the I2Cbus is idle, (step 420, “yes” branch).

For example, I2C overlay program 400, monitoring SCL 115 and SDA 120,determines that SCL 115 and SDA 120 both remain at the logical highstate for at least a minimum of 1 μs, for example, indicating the I2Cbus is idle (step 420, “yes” branch).

I2C overlay program 400 initiates a signal to drive the SCL to a logicallow state and holds the SCL at the logical low state (step 430). Forexample, I2C overlay program 400 initiates a signal that drives SCL 115to the logical low state and holds it at the logical low state until thehigh-speed serial communications are complete. Holding SCL 115 at alogical low state causes the “slave” devices connected to the I2C bus,that are not targeted by the master controller to remain idle (step430).

I2C overlay program 400 sends a transmission to identify (target) ahigh-speed-capable device connected to the I2C bus channels andinitiates sending/receiving of high-speed communications to thehigh-speed capable device (step 440).

In an exemplary embodiment, I2C overlay program 400, holding SCL 115 ata logical low state, begins sending high-speed communications on SDA 120to identify the targeted device, such as device 140. I2C overlay program400 receives from device 140, an acknowledgement of identity andacknowledgement of a forthcoming high-speed transmission from I2Coverlay program 400, (“read” or “write”). Device 140 waits for thehigh-speed data from I2C overlay program 400 (“write” transmission),receiving the transmission when sent. I2C overlay program 400 receivesan acknowledgement from device 140, of receiving the transmitted data.If device 140 needs to send data to I2C overlay program 400, theacknowledgement of received data from device 140 will include a signalindicating that a data transmission to I2C overlay program 400 is tofollow. I2C overlay program 400 sends an acknowledgement to device 140when the data is received, and high-speed serial transmissions continue,until complete (step 440). In a preferred embodiment the high-speedcommunications follow a high-speed serial protocol that includes, but isnot limited to, protocol steps of: start-of-transmission, read/write,acknowledgement and end-of-transmission conditions.

In one embodiment of the present invention, after all high speedtransmissions are complete, I2C overlay program 400 sends an“end-of-transmission” message to the target device and I2C overlayprogram 400 releases the SCL from the logical low state (step 450). Forexample, I2C overlay program 400 completes a final data transmission todevice 140 and receives acknowledgement that the data was received. I2Coverlay program 400 indicates the completion of all transmissions bysending an “end-of-transaction” message to device 140. Device 140receives the end-of-transaction message and returns to the electricalsignaling level for normal I2C protocol bus transactions. I2C overlayprogram 400 releases SCL 115 from the logical low state, and SCL 115returns to the logical high state via pull-up resistor 180. High-speedserial data transmissions having been completed, I2C overlay program 400sets SDA 120 to the logical high state (step 450). The I2C bus returnsto an idle condition with both SCL 115 and SDA 120 at the logical highstate. Normal I2C protocol activity may proceed, and I2C overlay program400 ends.

FIG. 5 depicts a block diagram of components of computing device 500 inaccordance with an illustrative embodiment of the present invention. Itshould be appreciated that FIG. 5 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Computing device 500 includes communications fabric 502, which providescommunications between computer processor(s) 504, memory 506, persistentstorage 508, communications unit 510, input/output (I/O) interface(s)512, and I2C bus 522. Communications fabric 502 can be implemented withany architecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric502 can be implemented with multiple buses.

Memory 506 and persistent storage 508 are computer-readable storagemedia. In this embodiment, memory 506 includes random access memory(RAM) 514 and cache memory 516. In general, memory 506 can include anysuitable volatile or non-volatile computer-readable storage media.

I2C overlay program 300 is stored in persistent storage 508 forexecution by one or more of the respective computer processors 504 viaone or more memories of memory 506. In this embodiment, persistentstorage 508 includes a magnetic hard disk drive. Alternatively, or inaddition to a magnetic hard disk drive, persistent storage 508 caninclude a solid state hard drive, a semiconductor storage device,read-only memory (ROM), erasable programmable read-only memory (EPROM),flash memory, or any other computer-readable storage media that iscapable of storing program instructions or digital information.

The media used by persistent storage 508 may also be removable. Forexample, a removable hard drive may be used for persistent storage 508.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage508.

In a preferred embodiment bus 522 is an I2C bi-directional, two-line busincluding a SCL and a SDA. The SCL and SDA of I2C bus 522 are used bymaster 130 and I2C devices 170 for I2C protocol communications, and inembodiments of the present invention, are used by devices 140 and 150 asa high-speed serial communications bus by executing I2C overlay program400, which uses available bandwidth of the I2C bus. Although a singleinstance of bus 522 is depicted in FIG. 5, other embodiments may includemultiple instances of bus 522.

Communications unit 510, in these examples, provides for communicationswith other data processing systems or devices, including resources ofI2C bus environment 100 and devices 140, 150, and I2C devices 170. Inthese examples, communications unit 510 includes one or more networkinterface cards. Communications unit 510 may provide communicationsthrough the use of either or both physical and wireless communicationslinks. I2C overlay program 400 may be downloaded to persistent storage508 through communications unit 510.

I/O interface(s) 512 allows for input and output of data with otherdevices that may be connected to computing device 500. For example, I/Ointerface 512 may provide a connection to external devices 518 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 518 can also include portable computer-readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention, e.g., I2C overlay program 400, canbe stored on such portable computer-readable storage media and can beloaded onto persistent storage 508 via I/O interface(s) 512. I/Ointerface(s) 512 also connect to a display 520.

Display 520 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

What is claimed is:
 1. A method for serial communications of aprogrammable device connected to an I2C bus, the I2C bus including aserial clock channel (SCL) and a serial data channel (SDA), the SCLchannel and the SDA channel including at least a first logical state anda second logical state, the method comprising: the programmable devicedetermining if the SCL channel and the SDA channel are idle, wherein anidle SCL channel and an idle SDA channel are at the second logicalstate; in response to the SCL channel and the SDA channel being idle,the programmable device transmitting a signal holding the SCL channel toa first logical state; the programmable device operating high-speedserial communications using the SDA channel, wherein the high-speedserial communications include a serial communications rate in excess of3.4 megabits per second (Mbit/s); and in response to completion of thehigh-speed serial communications, the programmable device releasing theSCL channel and the SCL channel returning to the second logical state.2. The method of claim 1, further comprising: the programmable devicereturning the SDA channel to the second logical state in response tocompletion of the high-speed serial communications.
 3. The method ofclaim 1, wherein the programmable device operating the high-speed serialcommunications uses a high-speed serial protocol.
 4. The method of claim1, wherein the programmable device is multiplexed to the I2C bus.
 5. Themethod of claim 1, wherein operating the high-speed serialcommunications includes transmitting communications or receivingcommunications or both.
 6. The method of claim 5, wherein transmittingcommunications or receiving communications or both, further includestransmitting or receiving data or instructions or both.
 7. A computerprogram product for serial communications of a programmable deviceconnected to an I2C bus, the bus including a serial clock (SCL) channeland a serial data (SDA) channel, the SCL channel and the SDA channelincluding at least a first logical state and a second logical state, thecomputer program product comprising: one or more computer-readabletangible storage devices and program instructions stored on at least oneof the one or more storage devices, the program instructions comprising:program instructions to determine if the SCL channel and the SDA channelare idle, wherein the idle SCL channel and the idle SDA channel are at asecond logical state; in response to the SCL channel and the SDA channelbeing idle, program instructions to transmit a signal to hold the SCLchannel to a first logical state; program instructions to operatehigh-speed serial communications using the SDA channel, wherein thehigh-speed serial communications include a serial communications rate inexcess of 3.4 megabits per second (Mbit/s); and in response tocompletion of the high-speed serial communications, program instructionsto release the SCL channel and the SCL channel returning to the secondlogical state.
 8. The computer program product of claim 7, furthercomprising: program instructions to return the SDA channel to the secondlogical state in response to completion of the high-speed serialcommunications.
 9. The computer program product of claim 7, furthercomprising: program instructions to operate the high-speed serialcommunications using a high-speed, single ended, serial protocol. 10.The method of claim 7, further comprising: program instructions tooperate the high-speed serial communications including transmittingcommunications or receiving communications or both.
 11. The computerprogram product of claim 10, wherein transmitting communications orreceiving communications or both, further comprises: programinstructions for transmitting or receiving data, transmitting orreceiving instructions, or both.
 12. A system for serial communicationsof a programmable device connected to an I2C bus, the bus including aserial clock (SCL) channel and a serial data (SDA) channel, the SCLchannel and the SDA channel including at least a first logical state anda second logical state, the system comprising: one or more processors,one or more computer-readable memories, one or more computer-readabletangible storage devices, and program instructions stored on at leastone of the one or more storage devices for execution by at least one ofthe one or more processors via at least one of the one or more memories,the program instructions comprising: program instructions to determineif the SCL channel and the SDA channel are idle, wherein the idle SCLand the idle SDA channel are at a second logical state; in response tothe SCL channel and the SDA channel being idle, program instructions totransmit a signal holding the SCL channel to a first logical state;program instructions to operate high-speed serial communications usingthe SDA channel, wherein the high-speed serial communications include aserial communications rate in excess of 3.4 megabits per second(Mbit/s); and in response to completion of the high-speed serialcommunications, program instructions to release the SCL channel and theSCL channel returning to the second logical state.
 13. The system ofclaim 12, further comprising: program instructions to return the SDAchannel to the second logical state in response to completion of thehigh-speed serial communications.
 14. The system of claim 12, furthercomprising: program instructions to operate the high-speed serialcommunications using a high-speed, single-ended, serial protocol. 15.The system of claim 12, further comprising: program instructions tomultiplex a programmable device to the 12C bus.
 16. The system of claim12, further comprising: program instructions to operate the high-speedserial communications including transmitting communications or receivingcommunications or both.
 17. The system of claim 16, wherein transmittingcommunications or receiving communications or both, further comprises:program instructions for transmitting or receiving data, transmitting orreceiving instructions, or both.